package com.cloud.mkz.admin.api.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.cloud.mkz.admin.api.dto.RoleMenuDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.sql.Timestamp;
import java.util.List;

/**
 * 系统权限
 *
 * @author mkz code generator
 * @date 2021-03-23 11:15:14
 */
@Data
@TableName("rbac_menu")
@Accessors(chain = true)
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "系统权限")
public class RbacMenu extends Model<RbacMenu> {
    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @TableId
    @ApiModelProperty(value="主键")
    private Long pkId;
    /**
     * 菜单名称
     */
    @ApiModelProperty(value="菜单名称")
    private String menuName;
    /**
     * 显示名称
     */
    @ApiModelProperty(value="显示名称")
    private String displayName;
    /**
     * 菜单图标
     */
    @ApiModelProperty(value="菜单图标")
    private String menuIcon;
    /**
     * 菜单地址
     */
    @ApiModelProperty(value="菜单地址")
    private String menuUrl;
    /**
     * 权限标识
     */
    @ApiModelProperty(value="权限标识")
    private String authorityKey;
    /**
     * 链接打开方式 ：_self，_blank
     */
    @ApiModelProperty(value="链接打开方式 ：_self，_blank")
    private String openType;
    /**
     * 父主键
     */
    @ApiModelProperty(value="父主键")
    private Long parentId;
    /**
     * 菜单分类 ：1目录2菜单3按钮
     */
    @ApiModelProperty(value="菜单分类 ：1目录2菜单3按钮")
    private Integer menuType;
    /**
     * 排序序号
     */
    @ApiModelProperty(value="排序序号")
    private Integer orderNo;
    /**
     * 是否显示 ：0隐藏1显示
     */
    @ApiModelProperty(value="是否显示 ：0隐藏1显示")
    private Integer isShow;
    /**
     * 菜单状态 ：0禁用1启用
     */
    @ApiModelProperty(value="菜单状态 ：0禁用1启用")
    private Integer menuStatus;
    /**
     * 备注说明
     */
    @ApiModelProperty(value="备注说明")
    private String remark;
    /**
     * 创建时间
     */
    @ApiModelProperty(value="创建时间")
    private Timestamp createdTime;
    /**
     * 更新时间
     */
    @ApiModelProperty(value="更新时间")
    private Timestamp updatedTime;


    /**
     * 父菜单名称
     */
    @TableField(exist = false)
    @ApiModelProperty(value="父菜单名称")
    private String parentName;
    /**
     * 子菜单列表
     */
    @TableField(exist = false)
    @ApiModelProperty(value="子菜单列表")
    private List<RbacMenu> children;
    /**
     * 子菜单列表
     */
    @TableField(exist = false)
    @ApiModelProperty(value="是否已分配")
    private Integer assigned;

    public RbacMenu(RoleMenuDto roleMenuDto){
        this.pkId = roleMenuDto.getMenuId();
        this.displayName = roleMenuDto.getDisplayName();
        this.parentId = roleMenuDto.getParentId();
        this.menuUrl = roleMenuDto.getMenuUrl();
        this.menuType = roleMenuDto.getMenuType();
        this.menuIcon = roleMenuDto.getMenuIcon();
        this.isShow = roleMenuDto.getIsShow();
    }
}
